/* * Copyright 2011 PrimeFaces Extensions. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * $Id$ */ package org.primefaces.extensions.showcase.controller.masterdetail; import java.io.Serializable; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import javax.el.ELContext; import javax.faces.FacesException; import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; import javax.faces.context.FacesContext; import javax.faces.model.SelectItem; import org.primefaces.extensions.showcase.model.Person; /** * ComplexMasterDetailController. * * @author Oleg Varaksin / last modified by $Author$ * @version $Revision$ */ @ManagedBean @ViewScoped public class ComplexMasterDetailController implements Serializable { private static final long serialVersionUID = 20111120L; private List<Person> persons; private List<SelectItem> availableLanguageSkills = null; private List<String> selectedLanguageSkills = new ArrayList<String>(); private String languageSkillToAdd; public ComplexMasterDetailController() { if (persons == null) { persons = new ArrayList<Person>(); Calendar calendar = Calendar.getInstance(); calendar.set(1972, 5, 25); persons.add(new Person("1", "Max Mustermann", 1, calendar.getTime())); calendar.set(1981, 12, 10); persons.add(new Person("2", "Sara Schmidt", 2, calendar.getTime())); calendar.set(1968, 2, 13); persons.add(new Person("3", "Jasper Morgan", 3, calendar.getTime())); } } public List<Person> getPersons() { return persons; } public List<SelectItem> getAvailableLanguageSkills() { if (availableLanguageSkills == null) { availableLanguageSkills = new ArrayList<SelectItem>(); availableLanguageSkills.add(new SelectItem("English", "English")); availableLanguageSkills.add(new SelectItem("German", "German")); availableLanguageSkills.add(new SelectItem("Russian", "Russian")); availableLanguageSkills.add(new SelectItem("Turkish", "Turkish")); availableLanguageSkills.add(new SelectItem("Dutch", "Dutch")); availableLanguageSkills.add(new SelectItem("French", "French")); availableLanguageSkills.add(new SelectItem("Italian", "Italian")); } return availableLanguageSkills; } public List<String> getSelectedLanguageSkills() { return selectedLanguageSkills; } public void setLanguageSkillToAdd(String languageSkillToAdd) { this.languageSkillToAdd = languageSkillToAdd; } public String getLanguageSkillToAdd() { return languageSkillToAdd; } public String saveSuccess(Person person) { FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Person " + person.getName() + " has been saved", null); FacesContext.getCurrentInstance().addMessage(null, message); return null; } public String saveFailure(Person person) { FacesContext fc = FacesContext.getCurrentInstance(); ELContext elContext = fc.getELContext(); SelectLevelListener selectLevelListener; try { selectLevelListener = (SelectLevelListener) elContext.getELResolver().getValue(elContext, null, "selectLevelListener"); selectLevelListener.setErrorOccured(true); } catch (RuntimeException e) { throw new FacesException(e.getMessage(), e); } FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Person " + person.getName() + " could not be saved", null); FacesContext.getCurrentInstance().addMessage(null, message); return null; } public String delete(Person person) { for (Person pers : persons) { if (pers.getId().equals(person.getId())) { persons.remove(pers); break; } } return null; } public void addLanguageSkill(Person person) { if (languageSkillToAdd != null) { person.addLanguageSkill(languageSkillToAdd); } languageSkillToAdd = null; } }